(function($) {
    $.fn.extend({
        MultiSelect: function(options) { //多选下拉插件
            var defaults = {
                SelButtonChooser: '[MultiSelectButton]', //多选下拉按钮选择器
                SelButtonTextChooser: '[MultiText]', //多选下拉按钮显示的文本选择器
                SelcontainerChooser: '[MultiSelect]', //多选下拉容器选择器
                RadioAssemblyChooser: '[Radio]', //单选组件选择器
                checkboxAssemblyChooser: '[checkbox]', //多选组件选择器
                SelButtonText: '所有', //多选下拉按钮显示的文本
                SelButtonAction: 'action',
                checkboxFalse: function($SelButton, $checkboxAssembly, $obj) {}, //参数说明：$SelButton按钮,$checkboxAssembly多选下拉组件,$obj当前选项
                checkboxTrue: function($SelButton, $checkboxAssembly, $obj) {} //参数说明：$SelButton按钮,$checkboxAssembly多选下拉组件,$obj当前选项
            };
            var options = $.extend(defaults, options);
            $('body').unbind('click.MultiSelect').on('click.MultiSelect', function(event) {
                $(this).find(options.SelcontainerChooser).slideUp(10);
                $('[suffix]').removeClass('open');
            });
            return this.each(function() {
                var $obj = $(this);
                var $SelButton = $obj.find(options.SelButtonChooser); //多选下拉按钮
                var $SelButtonText = $SelButton.find(options.SelButtonTextChooser); //多选下拉按钮显示的文本
                var $Selcontainer = $obj.find(options.SelcontainerChooser); //多选下拉容器
                var $RadioAssembly = $Selcontainer.find(options.RadioAssemblyChooser); //单选组件
                var $checkboxAssembly = $Selcontainer.find(options.checkboxAssemblyChooser); //多选组件
                var $ResetButton = $Selcontainer.find('[classifyReset]'); //重置按钮
                var $SubmitButton = $Selcontainer.find('[classifySubmit]'); //确定按钮

                //点击下拉空白区域无操作
                $Selcontainer.unbind('click.MultiSelect').on('click.MultiSelect', function(event) {
                    event.stopPropagation();
                });
                $SelButton.unbind('click.MultiSelect').on('click.MultiSelect', function(event) {
                    $("body").click();
                    if ($Selcontainer.is(':hidden')) {
                        $Selcontainer.slideDown(100);
                        $obj.addClass('open');
                    } else {
                        $Selcontainer.hide();
                        $obj.removeClass('open');
                    }
                    event.stopPropagation();
                });
                //单选组件
                $RadioAssembly.unbind('click.MultiSelect').on('click.MultiSelect', 'li', function(event) {
                    var $option = $(this),
                        $classSel = $option.parents("[MultiSelect]");
                    $classSel.find("[column]").hide();
                    var ware = $option.attr('ware');
                    var switchs = $option.attr('switch');
                    if ($option.hasClass(options.SelButtonAction)) { //重复点击同一个选项
                        MultiSelectReset();
                        $option.find("[type='checkbox']").prop('checked', false);
                        $option.removeClass(options.SelButtonAction);
                        $SelButtonText.text(options.SelButtonText);
                    } else {
                        MultiSelectReset();
                        $option.find("[type='checkbox']").prop('checked', true);
                        $option.addClass(options.SelButtonAction);
                        $SelButtonText.text($option.text());
                        if ($option.attr('ware') && $option.attr('switch')) {
                            $classSel.find("[column=" + ware + "-" + switchs + "]").show();
                        }

                    }
                });
                //多选组件
                $checkboxAssembly.unbind('click.MultiSelect').on('click.MultiSelect', 'li', function(event) {
                    var $obj = $(this);
                    if ($obj.find("[type='checkbox'][boxall]").length > 0) { // 组件全选
                        if ($obj.hasClass(options.SelButtonAction)) {
                            $obj.parent().find("[type='checkbox']").prop('checked', false);
                            $obj.parent().find("li").removeClass(options.SelButtonAction);
                        } else {
                            $obj.parent().find("[type='checkbox']").prop('checked', true);
                            $obj.parent().find("li").addClass(options.SelButtonAction);
                        }
                    } else {
                        if ($obj.hasClass(options.SelButtonAction)) {
                            $obj.removeClass(options.SelButtonAction);
                            $obj.find("[type='checkbox']").prop('checked', false);
                            $obj.parent().find("[boxall]").prop('checked', false).parent().removeClass(options.SelButtonAction);
                            options.checkboxFalse($SelButton, $checkboxAssembly, $obj);
                        } else {
                            $obj.addClass(options.SelButtonAction);
                            $obj.find("[type='checkbox']").prop('checked', true);
                            if ($obj.parent().find('.' + options.SelButtonAction).length === $obj.parent().find('li').length - 1) {
                                $obj.parent().find("[boxall]").prop('checked', true).parent().addClass(options.SelButtonAction);
                            }
                            options.checkboxTrue($SelButton, $checkboxAssembly, $obj);
                        }
                    }
                });
                //重置按钮
                function MultiSelectReset() {
                    $SelButtonText.text(options.SelButtonText);
                    $Selcontainer.find('.' + options.SelButtonAction).removeClass(options.SelButtonAction);
                    $Selcontainer.find("[type='checkbox']").prop('checked', false);
                    $Selcontainer.find("[column]").hide();
                }
                MultiSelectReset();
                $ResetButton.unbind('click.MultiSelect').on('click.MultiSelect', function() {
                    MultiSelectReset();
                });
                //确认按钮
                $SubmitButton.unbind('click.MultiSelect').on('click.MultiSelect', function() {
                    $Selcontainer.slideUp();
                });
            });
        },
        multiSelectCheckbox: function(options) {
            return this.each(function() {
                if (options) { //判断有没有一级选项值
                    var $suffix = $(this);
                    var $classifySelect = $suffix.find('[MultiSelect]');
                    $suffix.find('[classifyreset]').click();
                    $.each(options, function(index, value) {
                        var $checkbox = $classifySelect.find('input[type=checkbox][value=' + value + ']');
                        if (index == 0) {
                            $suffix.find('[MultiText]').text($checkbox.parent().text());
                        }
                        Check($checkbox);
                    });
                }
            });
        },
        selectCheckbox: function(data1, data2) {
            if (data1) { //判断有没有一级选项值
                var $classifySelect = $(this);
                var $checkbox = $classifySelect.find('input[type=checkbox][name=domaingroup][value=' + data1 + ']');

                $classifySelect.find('[classifyreset]').click();
                $checkbox.parent().each(function(index, el) {
                    var column = $(this).attr("switch");
                    Check($checkbox);
                    if (index == 0) { // 修改显示打开下拉按钮显示
                        $classifySelect.find('[MultiText]').text($checkbox.parent().text());
                    }
                    if (column) { //判断有没有下拉
                        var ware = $(this).attr("ware");
                        var $checkbox2 = $classifySelect.find("[column=" + ware + "-" + column + "]");

                        if ($checkbox2.length == 0 && typeof(getGroupTwo) == "function") { // 判断是否有二级分类
                            var twoHtml = getGroupTwo(column);
                            if (twoHtml) { //生成二级分类
                                $checkbox2 = $(twoHtml);
                                $checkbox.parent().parent().after($checkbox2);
                            } else {
                                $checkbox.parent().removeAttr("switch");
                            }
                        }

                        $checkbox2.show();
                        if (data2) {
                            var allbox = 0;
                            $.each(data2, function(index, val) {
                                Check($checkbox2.find('input[type=checkbox][value=' + val + ']'));
                            });
                        }
                    }
                });
            } else {
                $('[classifyButton]').find(".selected").text(lang.allCategories);
            }
        }
    })
})(jQuery);

function Check($checkbox) {
    $checkbox.prop('checked', true).parent().addClass('action');
} //点亮选项

function checkMultiSelect() {
    //输入框获取焦点和失去焦点状态
    $('[Suffix]').MultiSelect({
        SelButtonText: lang.allSuffix,
        checkboxFalse: function($SelButton, $checkboxAssembly, $obj) { //参数说明：$SelButton按钮,$checkboxAssembly多选下拉组件,$obj当前选项
            var $checkbox_checked = $checkboxAssembly.find("[type='checkbox']:checked");
            if ($checkbox_checked.length < 1) {
                $SelButton.find('[MultiText]').text(lang.allSuffix);
            } else {
                $SelButton.find('[MultiText]').text($checkbox_checked.eq(0).parent().text());
            }
        },
        checkboxTrue: function($SelButton, $checkboxAssembly, $obj) { //参数说明：$SelButton按钮,$checkboxAssembly多选下拉组件,$obj当前选项
            var $checkbox_checked = $checkboxAssembly.find("[type='checkbox']:checked");
            $SelButton.find('[MultiText]').text($checkbox_checked.eq(0).parent().text());
        }
    });


    $('#check_all').unbind('click.MultiSelect').on('click.MultiSelect', function() {
        Check($(this).parents('[MultiSelect]').find('[checkbox]').find("[type='checkbox']"));
    });



    $('[classifyAlert]').MultiSelect({
        SelButtonText: lang.allCategories
    });

}
$(document).ready(function() {
    checkMultiSelect();
    $('.dropdown').easyDropDown({
        //cutoff代表下拉框只显示8条数据
        cutOff: 8,
    });
});


